// import com.alibaba.druid.sql.ast.SQLExpr;
// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.expr.SQLIntegerExpr;
// import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
// import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "MySqlStatementImpl.h"

class MySqlFlushStatement : virtual public MySqlStatementImpl
{
public:
  BOOL_ptr noWriteToBinlog;
  BOOL_ptr local;

  SQLExprTableSource_list_ptr tables;

  BOOL_ptr withReadLock;
  BOOL_ptr forExport;

  BOOL_ptr binaryLogs;
  BOOL_ptr desKeyFile;
  BOOL_ptr engineLogs;
  BOOL_ptr errorLogs;
  BOOL_ptr generalLogs;
  BOOL_ptr hots;
  BOOL_ptr logs;
  BOOL_ptr master;
  BOOL_ptr privileges;
  BOOL_ptr optimizerCosts;
  BOOL_ptr queryCache;
  BOOL_ptr relayLogs;
  SQLExpr_ptr relayLogsForChannel;
  BOOL_ptr slowLogs;
  BOOL_ptr status;
  BOOL_ptr userResources;
  BOOL_ptr tableOption;
  SQLIntegerExpr_ptr version; // for ads

  MySqlFlushStatement();
  SHAREDOBJECT(MySqlFlushStatement);
  BOOL_ptr isNoWriteToBinlog();

  void setNoWriteToBinlog(BOOL_ptr noWriteToBinlog);

  BOOL_ptr isLocal();

  void setLocal(BOOL_ptr local);

  SQLExprTableSource_list_ptr getTables();

  BOOL_ptr isWithReadLock();

  void setWithReadLock(BOOL_ptr withReadLock);

  BOOL_ptr isForExport();

  void setForExport(BOOL_ptr forExport);

  BOOL_ptr isBinaryLogs();

  void setBinaryLogs(BOOL_ptr binaryLogs);

  BOOL_ptr isDesKeyFile();

  void setDesKeyFile(BOOL_ptr desKeyFile);

  BOOL_ptr isEngineLogs();

  void setEngineLogs(BOOL_ptr engineLogs);

  BOOL_ptr isGeneralLogs();

  void setGeneralLogs(BOOL_ptr generalLogs);

  BOOL_ptr isHots();

  void setHots(BOOL_ptr hots);

  BOOL_ptr isLogs();

  void setLogs(BOOL_ptr logs);

  BOOL_ptr isPrivileges();

  void setPrivileges(BOOL_ptr privileges);

  BOOL_ptr isOptimizerCosts();

  void setOptimizerCosts(BOOL_ptr optimizerCosts);

  BOOL_ptr isQueryCache();

  void setQueryCache(BOOL_ptr queryCache);

  BOOL_ptr isRelayLogs();

  void setRelayLogs(BOOL_ptr relayLogs);

  SQLExpr_ptr getRelayLogsForChannel();

  void setRelayLogsForChannel(SQLExpr_ptr relayLogsForChannel);

  BOOL_ptr isSlowLogs();

  void setSlowLogs(BOOL_ptr showLogs);

  BOOL_ptr isStatus();

  void setStatus(BOOL_ptr status);

  BOOL_ptr isUserResources();

  void setUserResources(BOOL_ptr userResources);

  BOOL_ptr isErrorLogs();

  void setErrorLogs(BOOL_ptr errorLogs);

  BOOL_ptr isTableOption();

  void setTableOption(BOOL_ptr tableOption);

  void accept0(MySqlASTVisitor_ptr visitor);

  void addTable(SQLName_ptr name);

  void addTable(SQLExprTableSource_ptr table);

  SQLIntegerExpr_ptr getVersion();

  void setVersion(SQLIntegerExpr_ptr version);

  BOOL_ptr isMaster();

  void setMaster(BOOL_ptr master);
};
